package lambda;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**
 * JDK8之后Java推出了一个新特性: lambda表达式
 * lambda表达式可以使用更简洁的语法来创建匿名内部类
 * 但前提是所实现的接口只能有一个抽象方法----函数式接口
 * 使用lambda可以重点体现方法的逻辑，让代码更优雅
 * 语法:
 *  (参数列表)->{
 *    方法体
 *  }
 */
public class LambdaDemo1 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();

        //匿名内部类写法:
        Collections.sort(list, new Comparator<String>() {
            public int compare(String o1, String o2) {
                return o1.length()-o2.length();
            }
        });

        //Lambda表达式写法:
        Collections.sort(list,(String o1, String o2) -> {
                return o1.length()-o2.length();
            }
        );

        //Lambda表达式中的参数类型可以不写
        Collections.sort(list,(o1, o2) -> {
                    return o1.length()-o2.length();
                }
        );

        //Lambda表达式方法体只有一句代码,方法体的{}可以不写，如果这句话有return，也一并不写
        Collections.sort(list,(o1, o2) -> o1.length()-o2.length());

    }
}











